'''xpath_入门解析html'''

# 引入包
from lxml import etree

# 解析html
html = etree.parse('xpath_入门解析html.html')
# print(analysis)

# 获取body标签中的ul标签下的li标签
li_list = html.xpath('//body/ul/li')
print(li_list) # [<Element li at 0x28d84baac40>, <Element li at 0x28d84baac80>, <Element li at 0x28d84baacc0>, <Element li at 0x28d84baad00>]


# 获取全局ul标签下的li标签 存在id属性 的标签文本
li_list = html.xpath('//ul/li[@id]/text()')
print(li_list) # ['北京', '广东']


# 获取全局ul标签下的li标签 id为l1 的class属性值
li_list = html.xpath('//ul/li[@id="l1"]/@class')
print(li_list)


# 获取全局ul标签下的li标签 class属性值
li_list = html.xpath('//ul/li/@class')
print(li_list) # ["'hello'"]


# 获取全局ul标签下的li标签 存在class属性 的标签文本
li_list = html.xpath('//ul/li[@class]/text()')
print(li_list) # ['北京']


# 获取全局ul标签下的li id属性为l1的 或 全局ul标签下的li id属性为abc 的；
li_list = html.xpath('//ul/li[@id="l1"]/text() | //ul/li[@id="abc"]/text()')
print(li_list)


# 获取全局ul标签下的li标签 id属性值包含l的
li_list = html.xpath('//ul/li[contains(@id, "l")]')
print(li_list)


# 获取全局ul标签下的li标签 id属性值前缀包含c的
li_list = html.xpath('//ul/li[starts-with(@id, "c")]')
print(li_list)


# 获取全局div class属性为container 下的div id属性为second 下的div class属性为three 的标签数据
li_list = html.xpath('//div[@class="container"]/div[@id ="second"]/div[@class="three"]/text()')
print(li_list) # ['水电费', '说的话房间不开封']

